// 比较版本号大小
// 如果 a > b，返回值大于 0 
// 如果 a < b，返回值小于 0
// 否则，返回值等于 0
export default function compareVersion(a, b) {
    if (!a) a = '0';
    if (!b) b = '0';

    a = stripPrefix(a);
    b = stripPrefix(b);

    if (a === b) return 0;

    const a0 = getBiggestVersion(a);
    const b0 = getBiggestVersion(b);

    if (a0 === b0) {
        const a1 = getOtherVersion(a);
        const b1 = getOtherVersion(b);

        return compareVersion(a1, b1);
    }

    if (a0 - b0 > 0) return 1;
    return -1;
}

// 获取最大的版本号
function getBiggestVersion(v) {
    return v.split('.')[0];
}

// 获取除最大版本号之外的其他版本号
function getOtherVersion(v) {
    const idx = v.indexOf('.');
    if (idx === -1) return '0';

    return v.slice(idx + 1);
}

// 删除 'v' 前缀
function stripPrefix(v) {
    const prefix = /^v/i;
    return String(v).replace(prefix, '');
}